package com.eden.door.listener;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;

import javax.swing.JComponent;

import com.eden.door.context.AppContext;
import com.eden.door.view.DoorView;
import com.eden.door.view.MainView;

/**
 * 处理门按钮事件
 * @author Eden
 *
 */
public class JbtListener implements ActionListener{
	private MainView mainView = null ;
	private Map<String , DoorView> cache  ;
	private DoorView doorView ;
	
	public JbtListener(MainView f ){
		this.mainView = f ;
		this.cache = new HashMap<String, DoorView>();
	}
	

	@Override
	public void actionPerformed(ActionEvent e) {
		String doorName = e.getActionCommand().trim() ;
		
		doorView =  cache.get(doorName) ;
		if(doorView == null){
			doorView = new DoorView(doorName);
			cache.put(doorName, doorView) ;
		}
		mainView.getJplContent().removeAll() ;
		
		//添加门计算面板
		mainView.getJplContent().setLayout(new BorderLayout()) ;
		
		JComponent doorPanel = doorView.getDoorViewPanel();
		mainView.getJplContent().add( doorPanel , BorderLayout.CENTER) ;
		
		//设置到当前上下文中,供计算用
		AppContext.instance().setCurrDoorView(doorView) ;
		
		//添加打印计算按钮
		mainView.getJplBottom().add(mainView.getJbtAddOrder()) ;
		mainView.getJplBottom().add(mainView.getJbtCalculate());
		
		mainView.getFrame().repaint() ;
		
		//改动布局之后都应调用此方法,重新验证布局和组件
		mainView.getFrame().validate() ;
	}

}
